package container

import (
	"go-LineScriptCommand/global"
)

// 切片管道容器
var PipelineDataSlice []PipelineData

// PipelineData 管道数据
type PipelineData struct {
	//数据
	//数组格式为 a\nb\nc
	Data string
	//第几个
	Index int
}

// 创建PipelineData
func NewPipelineData(data string) PipelineData {
	global.IndexPipe++
	return PipelineData{
		Data:  data,
		Index: global.IndexPipe,
	}
}

// 注册管道数据
func RegisterPipelineData(data PipelineData) {
	PipelineDataSlice = append(PipelineDataSlice, data)
}

// 获取管道数据
func GetPipelineData(index int) PipelineData {
	//判断是否越界
	if index >= len(PipelineDataSlice) {
		return PipelineData{}
	}
	return PipelineDataSlice[index]
}

// 获取前一个管道数据
func GetPrePipelineData() PipelineData {
	//判断是否有前一个
	if global.IndexPipe == 0 {
		return PipelineData{}
	}
	return PipelineDataSlice[global.IndexPipe-1]
}

// 获取前一个管道数据并将数据给传递来的切片
func GetPrePipelineDataAndData(args *[]string) {
	//判断是否有前一个
	if global.IndexPipe == 0 {
		return
	}
	data := GetPrePipelineData().Data
	//去掉字符串
	data = global.RemoveStrSymbol(data)
	*args = append([]string{data}, *args...)
}

// 清理管道数据
func ClearPipelineData() {
	PipelineDataSlice = []PipelineData{}
	global.IndexPipe = 0
}
